const Koa = require('koa'); // 框架 express koa 小型简单 egg 企业级比较复杂
const Router=require('koa-router'); //koa 框架生态体系中的路由中间件
// 静态服务器中间件
const server=require('koa-static'); // 服务器上的静态资源
const koabody=require('koa-body');
const path=require('path');
const fs=require('fs');
const tinify=require('tinify')

let app = new Koa();

tinify.key = 'WmG89ZPmyvvWFmtNW9L3CC6JcTpP7tTL';
let new1;

const home=server(path.join(__dirname)+'/public/')
app.use(home);

app.use(koabody({
    multipart:true, // 附件
    formidable:{
        maxFieldsSize:2000*1024*1024   // 2000kb
    }
}))

let router = new Router();  // 后端路由，前端路由 BrowserRouter|HashRouter

//  表单页面 html
//  router /upload view/upload.html
// MVC + router Model(模型层) View（视图层） controller（控制器）
// 6300 伺服状态 （死循环） -> router 中间件


// post  URL  /uploadPic async 耗时任务 控制器  
//  ctx , express (req, res) => {}
// koa  ctx = req + res
// 创建了路由中间件
router.post('/uploadPic', async (ctx) => {
    // post 请求体 需要一个中间间，把二进制数据收集起来
    // 复杂
    // await 写入文件
    const file=ctx.request.files.file;
    const reader=fs.createReadStream(file.path);  // 读流
    const myDate=new Date();
    const newFilename=myDate.getTime()+'.'+file.name.split('.')[1];
    // console.log(file);
    const targetPath = path.join(__dirname,'/public/images/')+newFilename;
    
    new1 = targetPath;
    const upStream=fs.createWriteStream(targetPath);
    reader.pipe(upStream);

    ctx.body = '上传成功';
  })
router.get('/zipimg', async (ctx) => {
    // ctx=req + res 这一次用户访问web 的上下文环境
    // context ctx 
    // 压缩功能

    let source = tinify.fromFile(new1);
    source.toFile(new1);

    ctx.body = '压缩成功';
  })
  // 挂载一下
  // router 所有的routes 
  // Methods GET POST DELETE  ...
app
    .use(router.routes())
    .use(router.allowedMethods()) // 设置允许的methods




app.listen(6300,()=>{
    console.log('服务器运行中')
})